package com.mexcad.db.connectors;

import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Session;

import com.mexcad.db.dto.Credito;
import com.mexcad.db.dto.Renta;
import com.mexcad.db.utils.HibernateUtil;

public class IvaUpdate {
	private static Log logger = LogFactory.getLog(IvaUpdate.class);
	
	public static boolean updateAllCreditsByIvaUpdate(){
		boolean flag = false;
		
		/*
		List<Credito> listadoCreditos = getAllCreditosAct();
		
		for(Credito credito:listadoCreditos){
		//	Credito credito = CreditoConnector.getCreditoPorId(2300);
			if(credito.getIdEstatus()==CreditoConnector.CREDITO_ACTIVO){
				double incrementoIva=0.0;
				double diferenciaImpuesto=0.0;
				double montoPorPeriodo=0.0;
				List<Renta> rentas= getAllRentasNewIvaByCredito(credito.getCkCredito().getIdCredito());
				
				for(Renta renta:rentas){
					if(renta.getIdEstatus()!=CreditoConnector.RENTA_PAGADA || 
					   renta.getIdEstatus()!=CreditoConnector.RENTA_SALDO_FAVOR){
						double impuestos=0.0;
						System.out.println(renta.getCkRenta().getIdCredito()+", "+
								           renta.getNumRenta()+", "+
										   renta.getCapital()+", ("+
								           renta.getIntereses()+", "+
								           renta.getOtros()+"), "+
								           renta.getImpuestos()+", "+
									       renta.getCargo()+", "+
								           renta.getFechaExigibleStr());
						
						impuestos= renta.getIntereses()*CreditoConnector.IVA;
						impuestos+=renta.getOtros()*CreditoConnector.IVA;
						
						diferenciaImpuesto+=(impuestos-renta.getImpuestos());
						

						renta.setCargo((double)renta.getCargo()+(impuestos-renta.getImpuestos()));
						renta.setSaldo((double)renta.getSaldo()+(impuestos-renta.getImpuestos()));
						renta.setImpuestos((double)impuestos);
						montoPorPeriodo=renta.getCapital()+renta.getIntereses()+renta.getOtros()+renta.getImpuestos();
						CreditoConnector.guardaRenta(renta);
						incrementoIva+=impuestos;
						
						
					}
					
					
				}
				
				credito.setMontoRestante((double)credito.getMontoRestante()+diferenciaImpuesto);
				credito.setMontoTotal((double)credito.getMontoTotal()+diferenciaImpuesto);
				credito.setImpuestos((double)credito.getImpuestos()+diferenciaImpuesto);
				credito.setMontoPorPeriodo((double)montoPorPeriodo);
				CreditoConnector.guardaCredito(credito);
				
			}
			
			
			
		}
		
		*/
		return flag;
	}
	
	public static List<Credito> getAllCreditosAct(){
		Session session = HibernateUtil.getSessionFactory().openSession();
		logger.debug("Querying Solicitud");
		String query =" from Credito where idestatus=1 order by apellidopaterno";
		List <Credito>lista=session.createQuery(query).list();
		session.close();
		return lista;	
	}
	
	
	
	public static List<Renta> getAllRentasNewIvaByCredito(int idCredito) {
		Session session = HibernateUtil.getSessionFactory().openSession();
		logger.debug("Querying Credito");
//		String query =" FROM  Renta where ckRenta.idCredito="+idCredito+" AND fechaExigible > '31/12/2009' " +"order by numRenta asc";
		String query =" FROM  Renta where ckRenta.idCredito="+idCredito+" AND fechaExigible > '2009-12-31' " +"order by numRenta asc";
		List <Renta> rentas=session.createQuery(query).list();
		session.close();
		return rentas;
	}
	
	public static void main(String []a){
		updateAllCreditsByIvaUpdate();
	}
	
	
}
